//
//  SSWBStatusCellTableViewCell.swift
//  shanshanlol微博
//
//  Created by 叶竞泽 on 2017/1/22.
//  Copyright © 2017年 JingZe. All rights reserved.
//

import UIKit

/// 微博Cell的协议
/// 协议需要遵守NSObjectProtocol协议
/// 如果要设置可选协议方法 - 协议需要是@objc的,方法也是需要@objc的
@objc
protocol SSWBStatusCellTableViewCellDelegate: NSObjectProtocol {
    
    /// 微博cell选中的URL字符串
    ///
    /// - Parameters:
    ///   - cell: 微博Cell
    ///   - urlString: 选中的字符串
    @objc optional func statusCellTableViewCellDidTapURLString(cell: SSWBStatusCellTableViewCell, urlString: String)
}

class SSWBStatusCellTableViewCell: UITableViewCell {
    
    /// 代理属性
    weak var delegate: SSWBStatusCellTableViewCellDelegate?
    
    /// 微博视图模型
    var viewModel: WBStatusViewModel? {
        
        didSet {
            // 设置微博文本
            statusLabel?.attributedText = viewModel?.statusAttrText
            // 设置被转发微博正文
            retweetStatusLabel?.attributedText = viewModel?.retweetAttrText
            // 设置会员图标
            memberIconView.image = viewModel?.memberIcon
            // 设置昵称
            nameLabel.text = viewModel?.status.user?.screen_name
            // 设置头像
            iconView.cz_setImage(urlString: viewModel?.status.user?.profile_image_url ?? "", placeholderImage: UIImage(named: "avatar_default_big"), isAvatar: true)
            // 设置认证图标
            vipIconView.image = viewModel?.vipIcon
            // 底部工具栏数据模型
            bottomToolBar.viewModel = viewModel
            // 配图视图的视图模型设置
            picView.viewModel = viewModel
            // 设置配图数据
            picView.urls = viewModel?.picURLs
            // 设置来源
            sourceLabel.text = viewModel?.sourceText
            // 设置时间
            timeLabel.text = viewModel?.status.createdDate?.dateDescription
        }
    }
    
    /// 头像
    @IBOutlet weak var iconView: UIImageView!
    
    /// 姓名
    @IBOutlet weak var nameLabel: UILabel!
    
    /// 会员等级图标
    @IBOutlet weak var memberIconView: UIImageView!
    
    /// 时间
    @IBOutlet weak var timeLabel: UILabel!
    
    /// 来源
    @IBOutlet weak var sourceLabel: UILabel!
    
    /// 认证图标
    @IBOutlet weak var vipIconView: UIImageView!
    
    /// 微博正文
    @IBOutlet weak var statusLabel: FFLabel!
    
    /// 底部工具栏
    @IBOutlet weak var bottomToolBar: SSWBStatusToolBar!
    
    /// 配图视图
    @IBOutlet weak var picView: SSWBStatusPicView!
    
    /// 转发微博正文,原创微博不存在此控件
    @IBOutlet weak var retweetStatusLabel: FFLabel?
    
    override func awakeFromNib() {
        super.awakeFromNib()
        
        // 1.开启异步绘制 - 离屏渲染
        layer.drawsAsynchronously = true
        // 2.栅格化 - 异步绘制后,会生成一张独立的图像,cell在屏幕上滚动时,本质上是滚动的这张图片
        // 停止滚动后可以接受监听
        // 必须指定分辨率
        // 耗电会厉害一些
        layer.shouldRasterize = true
        layer.rasterizationScale = UIScreen.main.scale
        // 3.设置微博文本代理
        statusLabel.delegate = self
        retweetStatusLabel?.delegate = self
    }
    
}

extension SSWBStatusCellTableViewCell: FFLabelDelegate {
    
    func labelDidSelectedLinkText(label: FFLabel, text: String) {
        
        // 判断是否是URL
        if text.hasPrefix("http://") {
            delegate?.statusCellTableViewCellDidTapURLString?(cell: self, urlString: text)
        }
    }
}
